package com.kobe.task.service.impl;

import java.util.Collections;
import java.util.List;
import com.kobe.common.utils.DateUtils;
import com.kobe.project.utils.MailUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.kobe.task.mapper.SysOaTaskMapper;
import com.kobe.task.domain.SysOaTask;
import com.kobe.task.service.ISysOaTaskService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 任务管理Service业务层处理
 *
 * @author ruoyi
 * @date 2025-10-18
 */
@Service
@RequiredArgsConstructor
public class SysOaTaskServiceImpl implements ISysOaTaskService
{
    @Autowired
    private SysOaTaskMapper sysOaTaskMapper;

    private final MailUtil mailUtil;

    /**
     * 查询任务管理
     *
     * @param taskId 任务管理主键
     * @return 任务管理
     */
    @Override
    public SysOaTask selectSysOaTaskByTaskId(Long taskId)
    {
        return sysOaTaskMapper.selectSysOaTaskByTaskId(taskId);
    }

    /**
     * 查询任务管理列表
     *
     * @param sysOaTask 任务管理
     * @return 任务管理
     */
    @Override
    public List<SysOaTask> selectSysOaTaskList(SysOaTask sysOaTask)
    {
        return sysOaTaskMapper.selectSysOaTaskList(sysOaTask);
    }

    /**
     * 新增任务管理
     *
     * @param sysOaTask 任务管理
     * @return 结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int insertSysOaTask(SysOaTask sysOaTask)
    {
        sysOaTask.setCreateTime(DateUtils.getNowDate());
        int i = sysOaTaskMapper.insertSysOaTask(sysOaTask);
        mailUtil.sendMail("1797089786@qq.com", "有新任务"+sysOaTask.getTaskTitle());
        return i;
    }

    /**
     * 修改任务管理
     *
     * @param sysOaTask 任务管理
     * @return 结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int updateSysOaTask(SysOaTask sysOaTask)
    {
        sysOaTask.setUpdateTime(DateUtils.getNowDate());
        return sysOaTaskMapper.updateSysOaTask(sysOaTask);
    }

    /**
     * 批量删除任务管理
     *
     * @param taskIds 需要删除的任务管理主键
     * @return 结果
     */
    @Override
    public int deleteSysOaTaskByTaskIds(Long[] taskIds)
    {
        return sysOaTaskMapper.deleteSysOaTaskByTaskIds(taskIds);
    }

    /**
     * 删除任务管理信息
     *
     * @param taskId 任务管理主键
     * @return 结果
     */
    @Override
    public int deleteSysOaTaskByTaskId(Long taskId)
    {
        return sysOaTaskMapper.deleteSysOaTaskByTaskId(taskId);
    }

    @Override
    public List<SysOaTask> selectSysOaTaskListByProjectId(long projectId) {
        return sysOaTaskMapper.selectSysOaTaskListByProjectId(projectId);
    }
}
